function formatTime(time) {
	if (typeof time !== 'number' || time < 0) {
		return time
	}

	var hour = parseInt(time / 3600)
	time = time % 3600
	var minute = parseInt(time / 60)
	time = time % 60
	var second = time

	return ([hour, minute, second]).map(function(n) {
		n = n.toString()
		return n[1] ? n : '0' + n
	}).join(':')
}

function formatLocation(longitude, latitude) {
	if (typeof longitude === 'string' && typeof latitude === 'string') {
		longitude = parseFloat(longitude)
		latitude = parseFloat(latitude)
	}

	longitude = longitude.toFixed(2)
	latitude = latitude.toFixed(2)

	return {
		longitude: longitude.toString().split('.'),
		latitude: latitude.toString().split('.')
	}
}
var dateUtils = {
	UNITS: {
		'年': 31557600000,
		'月': 2629800000,
		'天': 86400000,
		'小时': 3600000,
		'分钟': 60000,
		'秒': 1000
	},
	humanize: function(milliseconds) {
		var humanize = '';
		for (var key in this.UNITS) {
			if (milliseconds >= this.UNITS[key]) {
				humanize = Math.floor(milliseconds / this.UNITS[key]) + key + '前';
				break;
			}
		}
		return humanize || '刚刚';
	},
	format: function(dateStr) {
		var date = this.parse(dateStr)
		var diff = Date.now() - date.getTime();
		if (diff < this.UNITS['天']) {
			return this.humanize(diff);
		}
		var _format = function(number) {
			return (number < 10 ? ('0' + number) : number);
		};
		return date.getFullYear() + '/' + _format(date.getMonth() + 1) + '/' + _format(date.getDate()) + '-' +
			_format(date.getHours()) + ':' + _format(date.getMinutes());
	},
	parse: function(str) { //将"yyyy-mm-dd HH:MM:ss"格式的字符串，转化为一个Date对象
		var a = str.split(/[^0-9]/);
		return new Date(a[0], a[1] - 1, a[2], a[3], a[4], a[5]);
	}
};

function isPhoneNo(num) {
	if (!(/^1([1-9])\d{9}$/.test(num))) {
		return false;
	}
	return true;
}
function isIdNo(num) {
        if (!(/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(num))) {
            return false;
        }
        return true;
    }
function fnToTwo(n) {
	if (n < 10) {
		return '0' + n
	} else {
		return n
	}
}

const $api = {
	debounce(fn, wait = 1000) {
		let timer;
		return function() {
			let context = this;
			let args = arguments;
			if (timer) {
				clearTimeout(timer);
			}
			timer = setTimeout(() => {
				fn.apply(context, args);
			}, wait)
		}
	},

	throttle(fn, wait = 1000) {
		let timer;
		return function() {
			if (timer != null) return;
			let context = this;
			let args = arguments;
			fn.apply(context, args);
			timer = setTimeout(() => {
				timer = null;
			}, wait);
		}
	},
}

// 排序 签名
function getSignParam(ajaxDataValues) {
    ajaxDataValues.timestamp = Date.parse(new Date()) / 1000;
    ajaxDataValues.random = Math.floor(Math.random() * (999999 - 100000 + 1) + 100000);
    let arr = [];
    for (var key in ajaxDataValues) {
        arr.push(key)
    }
    arr.sort();
    let str = '';
    for (var i in arr) {
        str += arr[i] + "=" + ajaxDataValues[arr[i]] + "&"
    }
    str = str.substr(0, str.length - 1) + "signy8kyo9Z11s0qVwXr8LEHoAKxYdqq5P38";
    ajaxDataValues.sign = hex_md5(str).toUpperCase()
    return ajaxDataValues;
}

module.exports = {
	formatTime: formatTime,
	formatLocation: formatLocation,
	dateUtils: dateUtils,
	$api: $api,
	isPhoneNo: isPhoneNo,
	fnToTwo: fnToTwo,
	getSignParam: getSignParam,
	isIdNo: isIdNo
}
